package com.xxx.study.designmodel.a工厂方法模式;

/**
 * 生产商 抽象类
 */
public abstract class Maker {


    /**
     * 生产方法
     * 调用抽象方法去生产
     * 不关心使用哪种 产品制造对象，也不关心它具体实现细节
     */
    public void doSomething(){
        // 通过工厂方法 创建 产品制造对象。当前父类 不关心使用哪种 产品制造对象，也不关心它具体实现细节
        Machine machine = factoryMethod();
        // 调用 产品制造器对象 实现产品制造功能
        machine.made();
    }

    /**
     * 工厂方法,返回一个 实现了产品制造接口的 实现类。
     * @return
     */
    protected abstract Machine factoryMethod();

}
